package com.woldier.algorithm.sort;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;

/**
 * description 冒泡排序
 *
 * @author: woldier wong
 * @date: 2023/12/27$ 15:43$
 */
@Slf4j
public class BubbleSort {
    /**
     * description 冒泡排序
     * <pre>
     *       {@code
     *
     *             | 已排序区域
     * value 1 5 4 3 8 9
     * index 0 1 2 3 4 5
     *
     *       }
     *   </pre>
     * 算法思想是 根据j的索引从0-j中找到最大的元素排到最后
     *
     * @param a
     * @param j
     * @return void
     * @author: woldier wong
     * @date: 2023/12/27 15:45
     */
    private static void bubble(int[] a, int j) {
        while (j != 0) {
            int x= 0 ; //记录最近一次发生交换的位置
            for (int i = 0; i < j - 1; i++) { //一次排序, 将最大元素右移
                if (a[i] > a[i + 1]) {  //如果当前索引位置的元素比较大, 那么交换
                    int temp = a[i+1];
                    a[i + 1] = a[i];
                    a[i] = temp;
                    x=i;
                }
            }
            j=x; //右边界左移
        }
    }

    public static void main(String[] args) {
        int [] a = new int[]{1,5,4,3,8,9};
        bubble(a,5);
        for (int i : a) {
        log.debug(i+",");
        }
    }
}
